package com.efamily.ewallet.client.expense.service;

import java.util.List;

import com.efamily.ewallet.client.account.bean.AccountBean;
import com.efamily.ewallet.client.expense.bean.ExpenseBean;
import com.efamily.ewallet.client.expense.bean.ExpenseCategoryBean;
import com.efamily.ewallet.client.expense.bean.ExpenseSearchConfig;
import com.extjs.gxt.ui.client.data.PagingLoadConfig;
import com.extjs.gxt.ui.client.data.PagingLoadResult;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.rpc.AsyncCallback;

/**
 * The async counterpart of <code>ExpenseService</code>.
 */
public interface ExpenseServiceAsync {
	final ExpenseServiceAsync instance = GWT.create(ExpenseService.class);
	void getExpenses(AccountBean accountBean, ExpenseSearchConfig searchConfig, PagingLoadConfig pagingConfig, AsyncCallback<PagingLoadResult<ExpenseBean>> callback);
	void getCategories(AccountBean accountBean, AsyncCallback<List<ExpenseCategoryBean>> callback);
	void addEditExpense(AccountBean accountBean, ExpenseBean expense, AsyncCallback<Boolean> callback);
	void deleteExpenses(AccountBean accountBean, List<Integer> expensesID, AsyncCallback<Boolean> callback);
}
